SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO
CREATE PROC [dbo].[SP_TXMVTO_CNTB_Q04]  
/*-------------------------------------------------------------------*/    
/*----- Empresa           : OFISIS S.A.                          ----*/    
/*----- Cliente           : OFISIS S.A.                          ----*/    
/*----- Sistema           : Contabilidad                         ----*/    
/*----- Modulo            : Empresa                              ----*/    
/*----- Programa          : Libro diario Resumen                 ----*/    
/*----- Nombre            : SP_TXMVTO_CNTB_Q04                   ----*/    
/*----- Script            : TXMVTO_CNTB                          ----*/    
/*----- Desarrollado por  : Maria Laura Uribe                    ----*/    
/*----- Fecha             : 13/08/1997                           ----*/    
/*----- Base de Datos     : MS SQL Server                        ----*/    
/*----- Version BD        : 6.5                                  ----*/    
/*-------------------------------------------------------------------*/    
/*-------------------------------------------------------------------*/    
/*----- Modificado 1 por  : Percy Garcia V.                      ----*/    
/*----- Fecha Modifica    : 17/04/2002                           ----*/    
/*----- Detalle Modifica  : Adecuar cursor al filtro, graba totales por cuenta no anal?tica ----*/    
/*-------------------------------------------------------------------*/    
/*-------------------------------------------------------------------*/    
/*----- Drop proc SP_TXMVTO_CNTB_Q04                             ----*/    
/*----- Grant all on SP_TXMVTO_CNTB_Q04 to PUBLIC                ----*/    
/*----- EXEC SP_TXMVTO_CNTB_Q04 '01', 1, 2004, 4, 4, ''          ----*/    
/*-------------------------------------------------------------------*/    
@ISCO_EMPR  TD_VC_002,    
@INNU_CNTB_EMPR  TD_IN_001_CONT,    
@INNU_ANNO   TD_IN_004_ANNO,    
@INNU_MES1   TD_IN_002_MESE,    
@INNU_MES2   TD_IN_002_MESE,    
@ISCA_WHER       Varchar(1000)    
    
as    
Create Table #TWMVTO_CNTB_Q04_1(   
     CO_OPER  Varchar(03) NULL,          
     DE_OPER  Varchar(50) NULL,    
     CN_CNTB_EMPR Varchar(20) NULL,    
     DE_CN_CNTB_EMPR Varchar(50) NULL,  
     TI_OPER  char(03) NULL,  
     MONTO_CARG  Numeric(16,4) NULL,    
     MONTO_ABON  Numeric(16,4)  NULL,    
     MONTO_ORIG  Numeric(16,4)  NULL,    
     TOT_CARG  Numeric(16,4) NULL,    
     TOT_ABON  Numeric(16,4) NULL,    
     CONT      int NULL,    
     ST_FLAG  Char(01)  NULL)    
Declare    
 @CSCO_OPR1   TD_VC_003,    
 @CSCN_CNTB_EMP1  TD_VC_020_CNTA,    
 @VNIM_CARG   TD_NU_016_004,    
 @VNIM_ABON   TD_NU_016_004,    
 @VNIM_CARG_ORIG  TD_NU_016_004,    
 @VNIM_ABON_ORIG  TD_NU_016_004,    
 @CSDE_CNTA_EMPR  TD_VC_050,    
 @CSDE_OPER   TD_VC_050,    
 @VSCN_CNTA_EMP2  TD_VC_002,    
 @VSDE_CNTA_EMP2  TD_VC_050,    
 @VNTO_CARG   TD_NU_016_004,    
 @VNTO_ABON   TD_NU_016_004,    
 @VNNU_CONT   TD_IN_001,    
 @VSCA_SELE       Varchar(1000),    
 @VSNU_CNTB_EMPR  Varchar(2),    
 @VSNU_ANNO       Varchar(4),    
 @VSNU_ANNO_PLAN  Varchar(4),    
 @VSNU_MES1       Varchar(2),    
 @VSNU_MES2       Varchar(2)    
    
/* Opcion de Todos lAs Operaciones : @ISST_OPER  = '0'*/    
/* Opcion de Una Operacion         : @ISST_OPER  = '1'*/    
/* Opcion de Todos los Vouchers    : @ISST_ASTO  = '0'*/    
/* Opcion de Un Voucher        : @ISST_ASTO  = '1'*/    
/*Cursor saca operaciones y cuentAs de tabla de movimientos*/    
Select @VSNU_CNTB_EMPR = LTRIM(RTRIM(Convert (VARCHAR, @INNU_CNTB_EMPR)))    
Select @VSNU_ANNO = LTRIM(RTRIM(Convert (VARCHAR, @INNU_ANNO)))    
Select @VSNU_MES1 = LTRIM(RTRIM(Convert (VARCHAR, @INNU_MES1)))    
Select @VSNU_MES2 = LTRIM(RTRIM(Convert (VARCHAR, @INNU_MES2)))

Select @VSNU_ANNO_PLAN = '9999'  
  
Exec(' Declare CU_TXMVTO_CNTB_Q04_1 Cursor For  
Select TXMVTO_CNTB.CO_OPRC_CNTB, TXMVTO_CNTB.CO_CNTA_EMPR,  
Isnull(Sum (round(Isnull(TXMVTO_CNTB.IM_MVTO_CNTB, 0)*(ASCII(TXMVTO_CNTB.TI_OPER)/67),2)), 0),     
Isnull(Sum(round(Isnull(TXMVTO_CNTB.IM_MVTO_ORIG, 0)* (ASCII(TXMVTO_CNTB.TI_OPER)/67),2)), 0),     
Isnull(Sum (round(Isnull(TXMVTO_CNTB.IM_MVTO_CNTB, 0)*(65/ASCII(TXMVTO_CNTB.TI_OPER)),2)), 0),     
Isnull(Sum(round(Isnull(TXMVTO_CNTB.IM_MVTO_ORIG, 0)*(65/ASCII(TXMVTO_CNTB.TI_OPER)),2)), 0),  
Max(TMPLAN_EMPR.DE_CNTA_EMPR), Max(TMOPRC_CNTB.DE_OPRC)  
From   TXMVTO_CNTB
  Left Outer Join TMPLAN_EMPR
  On TMPLAN_EMPR.CO_EMPR = TXMVTO_CNTB.CO_EMPR 
  And  TMPLAN_EMPR.NU_ANNO = Convert(Int, "9999") 
  And  TMPLAN_EMPR.CO_CNTA_EMPR = TXMVTO_CNTB.CO_CNTA_EMPR,
  TMOPRC_CNTB  
Where  TXMVTO_CNTB.CO_EMPR = "' + @ISCO_EMPR + '" And  
TXMVTO_CNTB.NU_CNTB_EMPR = "' + @VSNU_CNTB_EMPR + '" And     
TXMVTO_CNTB.NU_ANNO = "' + @VSNU_ANNO + '" And 
TXMVTO_CNTB.NU_MESE between "' + @VSNU_MES1 + '" And "' + @VSNU_MES2 + '" And  
TXMVTO_CNTB.SI_MVTO_CNTB = "APR" ' + @ISCA_WHER + ' And 
TMOPRC_CNTB.CO_EMPR = TXMVTO_CNTB.CO_EMPR And 
TMOPRC_CNTB.CO_OPRC_CNTB = TXMVTO_CNTB.CO_OPRC_CNTB  
Group By TXMVTO_CNTB.CO_OPRC_CNTB, TXMVTO_CNTB.CO_CNTA_EMPR ') 
  
    
Open CU_TXMVTO_CNTB_Q04_1    
Fetch CU_TXMVTO_CNTB_Q04_1 Into   
      @CSCO_OPR1, @CSCN_CNTB_EMP1, @VNIM_CARG, @VNIM_CARG_ORIG, @VNIM_ABON, @VNIM_ABON_ORIG ,  
      @CSDE_CNTA_EMPR, @CSDE_OPER   
  
While @@Fetch_status = 0    
Begin    
  If @@Fetch_status < 0    
  Begin    
    raisERROR 20001 'ERROR en Diario Resumen'    
    Return    
  End  
      
 /*Inserta Cargos y Abonos*/    
  If (@VNIM_CARG != 0 And @VNIM_CARG IS NOT NULL)    
     Insert #TWMVTO_CNTB_Q04_1    
     Values (@CSCO_OPR1,@CSDE_OPER,@CSCN_CNTB_EMP1,@CSDE_CNTA_EMPR,'CAR',@VNIM_CARG, NULL,@VNIM_CARG_ORIG,0,0,0, 'N')    
  If (@VNIM_ABON != 0 And @VNIM_ABON IS NOT NULL)    
     Insert #TWMVTO_CNTB_Q04_1    
     Values (@CSCO_OPR1,@CSDE_OPER,@CSCN_CNTB_EMP1,@CSDE_CNTA_EMPR,'ABO',NULL, @VNIM_ABON, @VNIM_ABON_ORIG,0,0,0, 'N')    
  
  
 /*cuenta de quiebre 2*/  
 Select @VSCN_CNTA_EMP2 = substring(@CSCN_CNTB_EMP1,1,2)  
 Select @VSDE_CNTA_EMP2 = DE_CNTA_EMPR     
 From TMPLAN_EMPR    
 Where CO_EMPR = @ISCO_EMPR And            
       NU_ANNO = 9999 And     
       CO_CNTA_EMPR = @VSCN_CNTA_EMP2    
  
 If Exists(Select * From #TWMVTO_CNTB_Q04_1 Where CO_OPER = @CSCO_OPR1 And CN_CNTB_EMPR = @CSCN_CNTB_EMP1 And TI_OPER = 'ABO')     
   If Exists(Select * From #TWMVTO_CNTB_Q04_1 Where CO_OPER = @CSCO_OPR1 And CN_CNTB_EMPR = @VSCN_CNTA_EMP2 And TI_OPER = 'ABO')    
      Select @VSDE_CNTA_EMP2 = ''    
   Else    
   /*Inserta para operacion y cuentAs analiticAs la cuenta de longitud dos*/    
   Insert #TWMVTO_CNTB_Q04_1 Values (@CSCO_OPR1,@CSDE_OPER,@VSCN_CNTA_EMP2,@VSDE_CNTA_EMP2,'ABO',0.00, 0.00,0.00,0,0,0, 'S')    
 If Exists(Select * From #TWMVTO_CNTB_Q04_1 Where CO_OPER = @CSCO_OPR1 And CN_CNTB_EMPR = @CSCN_CNTB_EMP1 And TI_OPER = 'CAR')     
   If Exists(Select * From #TWMVTO_CNTB_Q04_1 Where CO_OPER = @CSCO_OPR1 And CN_CNTB_EMPR = @VSCN_CNTA_EMP2 And TI_OPER = 'CAR')    
   Select @VSDE_CNTA_EMP2 = ''    
   Else    
   /*Inserta para operacion y cuentAs analiticAs la cuenta de longitud dos*/    
   Insert #TWMVTO_CNTB_Q04_1 Values (@CSCO_OPR1,@CSDE_OPER,@VSCN_CNTA_EMP2,@VSDE_CNTA_EMP2,'CAR',0.00, 0.00,0.00,0,0,0, 'S')    
Fetch CU_TXMVTO_CNTB_Q04_1 Into   
      @CSCO_OPR1, @CSCN_CNTB_EMP1, @VNIM_CARG, @VNIM_CARG_ORIG, @VNIM_ABON, @VNIM_ABON_ORIG,  
      @CSDE_CNTA_EMPR, @CSDE_OPER  
  
End Close CU_TXMVTO_CNTB_Q04_1    
Deallocate CU_TXMVTO_CNTB_Q04_1    
  
/*------------------------------------------------------------------------------------------*/  
/*acumula totales por codigos de operacion*/    
Declare CU_TXMVTO_CNTB_Q04_2 Cursor    
For    
Select CO_OPER, Isnull(Sum(MONTO_CARG*(ASCII(TI_OPER)/67)), 0),Isnull(Sum(MONTO_ABON*(65/ASCII(TI_OPER))), 0)    
From #TWMVTO_CNTB_Q04_1    
Group By CO_OPER  
Order By CO_OPER  
  
Open CU_TXMVTO_CNTB_Q04_2    
Fetch CU_TXMVTO_CNTB_Q04_2 Into @CSCO_OPR1,@VNTO_CARG,@VNTO_ABON    
Select @VNNU_CONT = 0 While @@Fetch_status = 0    
Begin    
  If @@Fetch_status < 0    
  Begin    
    raisERROR 20001 'DE_ERRO Acumula'   
    Return    
  End    
    
  Select @VNNU_CONT = @VNNU_CONT + 1    

  Update #TWMVTO_CNTB_Q04_1     
   Set TOT_CARG = @VNTO_CARG,    
       TOT_ABON = @VNTO_ABON,     
       CONT = @VNNU_CONT    
  Where CO_OPER = @CSCO_OPR1

  Fetch CU_TXMVTO_CNTB_Q04_2 Into @CSCO_OPR1,@VNTO_CARG,@VNTO_ABON    
End    
Close CU_TXMVTO_CNTB_Q04_2    
Deallocate CU_TXMVTO_CNTB_Q04_2    
    
/*------------------------------------------------------------------------------------------*/  
Declare CU_TXMVTO_CNTB_Q04_2 Cursor    
For  Select CO_OPER, Substring(CN_CNTB_EMPR, 1, 2),     
Isnull(Sum(MONTO_CARG*(ASCII(TI_OPER)/67)), 0),Isnull(Sum(MONTO_ABON*(65/ASCII(TI_OPER))), 0)    
From #TWMVTO_CNTB_Q04_1    
Where ST_FLAG = 'N'    
Group By CO_OPER, SubString(CN_CNTB_EMPR, 1, 2)    
    
Open CU_TXMVTO_CNTB_Q04_2    
Fetch CU_TXMVTO_CNTB_Q04_2 Into @CSCO_OPR1, @CSCN_CNTB_EMP1, @VNTO_CARG,@VNTO_ABON    
Select @VNNU_CONT = 0     
While @@Fetch_status = 0    
Begin    
  If @@Fetch_status < 0    
  Begin    
    raisERROR 20001 'DE_ERRO Acumula'    
    Return    
  End    
    
  Update #TWMVTO_CNTB_Q04_1     
   Set MONTO_CARG = @VNTO_CARG,    
       MONTO_ABON = 0.00
  Where CO_OPER = @CSCO_OPR1    
  And CN_CNTB_EMPR = @CSCN_CNTB_EMP1    
  And TI_OPER = 'CAR'

  Update #TWMVTO_CNTB_Q04_1     
   Set MONTO_CARG = 0.00,
       MONTO_ABON = @VNTO_ABON    
  Where CO_OPER = @CSCO_OPR1    
  And CN_CNTB_EMPR = @CSCN_CNTB_EMP1    
  And TI_OPER = 'ABO'
     
  Fetch CU_TXMVTO_CNTB_Q04_2 Into @CSCO_OPR1, @CSCN_CNTB_EMP1, @VNTO_CARG,@VNTO_ABON    
End    
Close CU_TXMVTO_CNTB_Q04_2    
Deallocate CU_TXMVTO_CNTB_Q04_2    
  
Select CO_OPER, DE_OPER, CN_CNTB_EMPR, DE_CN_CNTB_EMPR,    
     TI_OPER, MONTO_CARG, MONTO_ABON, MONTO_ORIG, TOT_CARG,    
     TOT_ABON, CONT, substring(CN_CNTB_EMPR,1,2), Isnull(sum(Isnull(MONTO_CARG, 0)), 0),   
     Isnull(sum(Isnull(MONTO_ABON, 0)), 0)
From #TWMVTO_CNTB_Q04_1    
Group By CO_OPER, TI_OPER, substring(CN_CNTB_EMPR,1,2), DE_OPER, DE_CN_CNTB_EMPR,    
  MONTO_CARG,MONTO_ABON, MONTO_ORIG, TOT_CARG, TOT_ABON, CONT, CN_CNTB_EMPR    
Order By CO_OPER , CN_CNTB_EMPR, TI_OPER desc  
  
Return    
/*----------------------------------- Fin --------------------------------------*/    
  
  
  






GO
